/*
 * FileSystemElement.h
 *
 *  Created on: 26/06/2014
 *      Author: Vitor
 */

#ifndef FILESYSTEMELEMENT_H_
#define FILESYSTEMELEMENT_H_

#include <string>
#include "ByteQueue.h"

class FileSystemElement {
protected:
	std::string name;

public:
	enum {
		DIRECTORY, FILE_DESCRIPTOR, END_OF_CHILDREN
	};

	FileSystemElement(std::string name);
	virtual ~FileSystemElement();

	virtual void rename(std::string old_full_path,
			std::string new_full_path) = 0;

	virtual std::string html_encoding() = 0;

	virtual void print() = 0;

	std::string& get_name() {
		return name;
	}

	void set_name(std::string new_name) {
		name = new_name;
	}

	virtual ByteQueue serialize() = 0;
};

#endif /* FILESYSTEMELEMENT_H_ */
